package mybox.engine.rundfeder;

import static java.lang.Math.PI;
import static java.lang.Math.cos;
import static java.lang.Math.sin;
import mybox.engine.Figur;
import mybox.engine.File4Qcad;
import mybox.engine.QVector;
import mybox.engine.RandLinieOO;
	
	public class RundTopAussen implements Figur {
		
		File4Qcad file4qcad;
		QVector start;
		
		double laenge;
		double breite;
		double glattLaenge;
		double glattBreite;
		int anzahlSektoren;
		double innerSektorBreite;
		
		double materialDicke;
		double laserBreite;
		double zinkungsfaktor;
		
		RandLinieOO[] randlinie = new RandLinieOO[4];
		ViertelKreis[] viertelkreis = new ViertelKreis[4];
		
		public RundTopAussen(
				File4Qcad file4qcad, 
				QVector start, 
				double laenge, 
				double breite, 
				int anzahlSektoren, 
				double innerSektorBreite,
				double materialDicke,
				double laserBreite,
				double zinkungsFaktor
				) {
			this.file4qcad=file4qcad;
			this.start=start;
			this.laenge=laenge;
			this.breite=breite;
			glattLaenge=glattValue(laenge, innerSektorBreite, anzahlSektoren);
			glattBreite=glattValue(breite,innerSektorBreite,anzahlSektoren);
			this.anzahlSektoren=anzahlSektoren;
			this.innerSektorBreite=innerSektorBreite;
			this.materialDicke=materialDicke;
			this.laserBreite=laserBreite;
			this.zinkungsfaktor=zinkungsFaktor;	
			
			
							
			
		}
		
		public static double glattValue(double rawLaenge, double innerSektBreite, int anzahlSektoren) {
			return rawLaenge-2*ViertelKreis.radius(innerSektBreite, anzahlSektoren);
		}
				
		@Override
		public void draw() {
			
			
			for (int randIdx=0;randIdx<4;randIdx++) {
				
				QVector startPoint=null;
				if (randIdx==0) startPoint=start;
				else            startPoint=
						new QVector (
								viertelkreis[randIdx-1].end.x+(materialDicke*sin(randIdx*PI/2)),
								viertelkreis[randIdx-1].end.y-(materialDicke*cos(randIdx*PI/2))
										);
				double laengeBreite;
				if (randIdx%2==0) laengeBreite=glattLaenge;
				else			  laengeBreite=glattBreite;
				randlinie[randIdx] = new RandLinieOO(
						file4qcad,
						startPoint,
						randIdx*PI/2,
						laengeBreite,			
						materialDicke,
						zinkungsfaktor,
						laserBreite,
						false,//=isGlatt,
						true,//=isRand,
						false,//=isFemale,
						false//=hasRandVerkuerzt
						);
				
				randlinie[randIdx].draw();
				
				viertelkreis[randIdx]  = new ViertelKreis(
						file4qcad, 
						randlinie[randIdx].endPosInnen, 
						anzahlSektoren, 
						innerSektorBreite, 
						randIdx*PI/2-PI/2);
				
				viertelkreis[randIdx].draw();			
				
			}
			
					
			
		}

		

	}


